package com.binarytree;

public class BinaryTree {
    private HeroNode root;

    public void setRoot(HeroNode root) {
        this.root = root;
    }

    //二叉树的遍历，实际上就是二叉树本身的方法，调用者还是二叉树
    //节点只是方法的提供者
    public void preOrder(){
        if(this.root != null){
            this.root.preOrder();
        }else {
            System.out.println("二叉树为空，不能遍历");
        }
    }

    public void infixOrder(){
        if(this.root != null){
            this.root.infixOrder();
        }else {
            System.out.println("二叉树为空，不能遍历");
        }
    }

    public void postOrder(){
        if(this.root != null){
            this.root.postOrder();
        }else {
            System.out.println("二叉树为空，不能遍历");
        }
    }
    //二叉树的查找
    public HeroNode preOrderSearch(int no){
        if(root != null){
            return root.preOrderSearch(no);
        }else{
            return null;
        }
    }

    public HeroNode infixOrderSearch(int no){
        if(root != null){
            return root.infixOrderSearch(no);
        }else{
            return null;
        }

    }

    public HeroNode postOrderSearch(int no){
        if(root != null){
            return root.postOrderSearch(no);
        }else{
            return null;
        }
    }
    //节点的删除
    public void deleteNode(int no){
        if(root != null){
            //如果不为空，判断删除的结点是否为根节点
            if(root.getNo() == no){
                root = null;
            }else {
                root.deleteNode(no);
            }
        }else {
            System.out.println("该树为空树。");
        }
    }

}
